package com.ssm.icc.rpc.service.impl.estate;

import com.github.pagehelper.PageInfo;
import com.ssm.icc.dao.mapper.estate.EstateDao;
import com.ssm.icc.dao.model.estate.Estate;
import com.ssm.icc.rpc.api.estate.EstateService;
import com.ssm.upms.dao.mapper.ssm.AccountDao;
import com.ssm.upms.dao.mapper.ssm.AccountRoleDao;
import com.ssm.upms.dao.mapper.ssm.LzDao;
import com.ssm.upms.dao.model.Account;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
* 物业管理 Service
* @author GaoXiang
* @version 1.0
*/
@Service
public class EstateServiceImpl extends LzDao<Estate> implements EstateService {

    @Resource
    private EstateDao estateDao;

    @Resource
    private AccountDao accountDao;

    @Resource
    private AccountRoleDao accountRoleDao;

    /**
    * 保存数据
    * @param estate 实体对象
    * @return 实体id
    * @throws Exception 数据保存异常
    */
    public Integer insert(Estate estate) throws Exception {
        return estateDao.insert(estate);
    }


    /**
    * 根据 id 修改
    * @param estate 带id的实体对象
    * @return 受影响的行数
    * @throws Exception 数据修改异常
    */
    public Integer updateById(Estate estate) throws Exception {
        return estateDao.updateById(estate);
    }

    /**
    * 根据 id 删除
    * @param id 数据id
    * @return 受影响的行数
    * @throws Exception 数据删除异常
    */
    public Integer deleteById(String id) throws Exception {
       /* List<Account> accounts = accountDao.findByEstateId(id);
        if(accounts.size() > 0) {
            for(Account a : accounts){
                accountRoleDao.deleteByAccountId(a.getId());
                accountDao.deleteById(a.getId());
            }
        }*/
        return estateDao.deleteById(id);
    }

    /**
    * 根据 id 查找
    * @param id 实体id
    * @return 实体
    */
    public Estate selectById(String id) {
        return estateDao.selectById(id);
    }

    /**
    * 根据 id 批量删除
    * @param ids 要删除的id
    * @return 影响的行数
    * @throws Exception 数据删除异常
    */
    public Integer deleteByIds(List<String> ids) throws Exception {
        for(String id : ids) {
            Account account = accountDao.findByInfoId(id);
            accountRoleDao.deleteByAccountId(account.getId());
            accountDao.deleteById(account.getId());
        }
        return estateDao.deleteByIds(ids);
    }

    /**
    * 查询列表
    * @param map 参数
    * @return 列表
    */
    public PageInfo<Estate> list(Map map) {
        return estateDao.list(map);
    }

    /**
    * 查询列表 带分页
    * @param map 参数
    * @param page 页码
    * @param size 每页大小
    * @return 列表
    */
    public PageInfo<Estate> list(Map map, int page, int size) {
        return estateDao.list(map,page,size);
    }

    public  List<Estate> checkList(Map map){
        return  estateDao.checkList(map);
    }

    public  List<Estate> selectAll(Estate estate){
        return  estateDao.selectAll(estate);
    }

    /**
     * 根据user_id查询物业
     * 2017年6月16日 10:50:07 韩榕榕
     * @param userId
     * @return
     */
    public List<Estate> selectEstates(String userId){
        return  estateDao.selectEstates(userId);
    }

}
